/****************************************************************************
*                         A C A D E M I C   C O P Y
* 
* This file was produced by an ACADEMIC COPY of Parser Generator. It is for
* use in non-commercial software only. An ACADEMIC COPY of Parser Generator
* can only be used by a student, or a member of an academic community. If
* however you want to use Parser Generator for commercial purposes then you
* will need to purchase a license. For more information see the online help or
* go to the Bumble-Bee Software homepage at:
* 
* http://www.bumblebeesoftware.com
* 
* This notice must remain present in the file. It cannot be removed.
****************************************************************************/

/****************************************************************************
* sql2.cpp
* C++ source file generated from sql2.y.
* 
* Date: 06/06/06
* Time: 22:50:47
* 
* AYACC Version: 2.07
****************************************************************************/

#include <yycpars.h>

// namespaces
#ifdef YYSTDCPPLIB
using namespace std;
#endif
#ifdef YYNAMESPACE
using namespace yl;
#endif

// repeated because of possible precompiled header
#include <yycpars.h>

// namespaces
#ifdef YYSTDCPPLIB
using namespace std;
#endif
#ifdef YYNAMESPACE
using namespace yl;
#endif

#include ".\sql2.h"

#ifndef YYSTYPE
#define YYSTYPE int
#endif
#ifndef YYSTACK_SIZE
#define YYSTACK_SIZE 100
#endif
#ifndef YYSTACK_MAX
#define YYSTACK_MAX 0
#endif

/****************************************************************************
* N O T E
* 
* If the compiler generates a YYPARSERNAME error then you have not declared
* the name of the parser. The easiest way to do this is to use a name
* declaration. This is placed in the declarations section of your YACC
* source file and is introduced with the %name keyword. For instance, the
* following name declaration declares the parser myparser:
* 
* %name myparser
* 
* For more information see help.
****************************************************************************/

// yyattribute
#ifdef YYDEBUG
void YYFAR* YYPARSERNAME::yyattribute1(int index) const
{
	YYSTYPE YYFAR* p = &((YYSTYPE YYFAR*)yyattributestackptr)[yytop + index];
	return p;
}
#define yyattribute(index) (*(YYSTYPE YYFAR*)yyattribute1(index))
#else
#define yyattribute(index) (((YYSTYPE YYFAR*)yyattributestackptr)[yytop + (index)])
#endif

void YYPARSERNAME::yystacktoval(int index)
{
	yyassert(index >= 0);
	*(YYSTYPE YYFAR*)yyvalptr = ((YYSTYPE YYFAR*)yyattributestackptr)[index];
}

void YYPARSERNAME::yyvaltostack(int index)
{
	yyassert(index >= 0);
	((YYSTYPE YYFAR*)yyattributestackptr)[index] = *(YYSTYPE YYFAR*)yyvalptr;
}

void YYPARSERNAME::yylvaltoval()
{
	*(YYSTYPE YYFAR*)yyvalptr = *(YYSTYPE YYFAR*)yylvalptr;
}

void YYPARSERNAME::yyvaltolval()
{
	*(YYSTYPE YYFAR*)yylvalptr = *(YYSTYPE YYFAR*)yyvalptr;
}

void YYPARSERNAME::yylvaltostack(int index)
{
	yyassert(index >= 0);
	((YYSTYPE YYFAR*)yyattributestackptr)[index] = *(YYSTYPE YYFAR*)yylvalptr;
}

void YYFAR* YYPARSERNAME::yynewattribute(int count)
{
	yyassert(count >= 0);
	return new YYFAR YYSTYPE[count];
}

void YYPARSERNAME::yydeleteattribute(void YYFAR* attribute)
{
	delete[] (YYSTYPE YYFAR*)attribute;
}

void YYPARSERNAME::yycopyattribute(void YYFAR* dest, const void YYFAR* src, int count)
{
	for (int i = 0; i < count; i++) {
		((YYSTYPE YYFAR*)dest)[i] = ((YYSTYPE YYFAR*)src)[i];
	}
}

#ifdef YYDEBUG
void YYPARSERNAME::yyinitdebug(void YYFAR** p, int count) const
{
	yyassert(p != NULL);
	yyassert(count >= 1);

	YYSTYPE YYFAR** p1 = (YYSTYPE YYFAR**)p;
	for (int i = 0; i < count; i++) {
		p1[i] = &((YYSTYPE YYFAR*)yyattributestackptr)[yytop + i - (count - 1)];
	}
}
#endif

void YYPARSERNAME::yyaction(int action)
{
	switch (action) {
	case 0:
		{
#ifdef YYDEBUG
			YYSTYPE YYFAR* yya[3];
			yyinitdebug((void YYFAR**)yya, 3);
#endif
			{
#line 40 ".\\sql2.y"
 end_sql(); 
#line 157 "sql2.cpp"
			}
		}
		break;
	case 1:
		{
#ifdef YYDEBUG
			YYSTYPE YYFAR* yya[4];
			yyinitdebug((void YYFAR**)yya, 4);
#endif
			{
#line 41 ".\\sql2.y"
 end_sql(); 
#line 170 "sql2.cpp"
			}
		}
		break;
	default:
		yyassert(0);
		break;
	}
}

void YYPARSERNAME::yytables()
{
	yyattribute_size = sizeof(YYSTYPE);
	yysstack_size = YYSTACK_SIZE;
	yystack_max = YYSTACK_MAX;

#ifdef YYDEBUG
	static const yysymbol_t YYNEARFAR YYBASED_CODE symbol[] = {
		{ "$end", 0 },
		{ "\'(\'", 40 },
		{ "\')\'", 41 },
		{ "\'*\'", 42 },
		{ "\'+\'", 43 },
		{ "\',\'", 44 },
		{ "\'-\'", 45 },
		{ "\'.\'", 46 },
		{ "\'/\'", 47 },
		{ "\';\'", 59 },
		{ "\'=\'", 61 },
		{ "error", 256 },
		{ "NAME", 257 },
		{ "STRING", 258 },
		{ "INTNUM", 259 },
		{ "APPROXNUM", 260 },
		{ "OR", 261 },
		{ "AND", 262 },
		{ "NOT", 263 },
		{ "COMPARISON", 264 },
		{ "UMINUS", 265 },
		{ "ALL", 266 },
		{ "AMMSC", 267 },
		{ "ANY", 268 },
		{ "AS", 269 },
		{ "ASC", 270 },
		{ "AUTHORIZATION", 271 },
		{ "BETWEEN", 272 },
		{ "BY", 273 },
		{ "CHARACTER", 274 },
		{ "CHECK", 275 },
		{ "CLOSE", 276 },
		{ "COMMIT", 277 },
		{ "CONTINUE", 278 },
		{ "CREATE", 279 },
		{ "CURRENT", 280 },
		{ "CURSOR", 281 },
		{ "DECIMAL", 282 },
		{ "DECLARE", 283 },
		{ "DEFAULT", 284 },
		{ "DELETE", 285 },
		{ "DESC", 286 },
		{ "DISTINCT", 287 },
		{ "DOUBLE", 288 },
		{ "ESCAPE", 289 },
		{ "EXISTS", 290 },
		{ "FETCH", 291 },
		{ "FLOAT", 292 },
		{ "FOR", 293 },
		{ "FOREIGN", 294 },
		{ "FOUND", 295 },
		{ "FROM", 296 },
		{ "GOTO", 297 },
		{ "GRANT", 298 },
		{ "GROUP", 299 },
		{ "HAVING", 300 },
		{ "IN", 301 },
		{ "INDICATOR", 302 },
		{ "INSERT", 303 },
		{ "INTEGER", 304 },
		{ "INTO", 305 },
		{ "IS", 306 },
		{ "KEY", 307 },
		{ "LIKE", 309 },
		{ "NULLX", 310 },
		{ "NUMERIC", 311 },
		{ "OF", 312 },
		{ "ON", 313 },
		{ "OPEN", 314 },
		{ "OPTION", 315 },
		{ "ORDER", 316 },
		{ "PARAMETER", 317 },
		{ "PRECISION", 318 },
		{ "PRIMARY", 319 },
		{ "PRIVILEGES", 320 },
		{ "PUBLIC", 322 },
		{ "REAL", 323 },
		{ "REFERENCES", 324 },
		{ "ROLLBACK", 325 },
		{ "SCHEMA", 326 },
		{ "SELECT", 327 },
		{ "SET", 328 },
		{ "SMALLINT", 329 },
		{ "SOME", 330 },
		{ "SQLERROR", 332 },
		{ "TABLE", 333 },
		{ "TO", 334 },
		{ "UNION", 335 },
		{ "UNIQUE", 336 },
		{ "UPDATE", 337 },
		{ "USER", 338 },
		{ "VALUES", 339 },
		{ "VIEW", 340 },
		{ "WHENEVER", 341 },
		{ "WHERE", 342 },
		{ "WITH", 343 },
		{ "WORK", 344 },
		{ NULL, 0 }
	};
	yysymbol = symbol;

	static const char* const YYNEARFAR YYBASED_CODE rule[] = {
		"$accept: sql_list",
		"sql_list: sql \';\'",
		"sql_list: sql_list sql \';\'",
		"sql: schema",
		"schema: CREATE SCHEMA AUTHORIZATION user opt_schema_element_list",
		"opt_schema_element_list:",
		"opt_schema_element_list: schema_element_list",
		"schema_element_list: schema_element",
		"schema_element_list: schema_element_list schema_element",
		"schema_element: base_table_def",
		"schema_element: view_def",
		"schema_element: privilege_def",
		"base_table_def: CREATE TABLE table \'(\' base_table_element_commalist \')\'",
		"base_table_element_commalist: base_table_element",
		"base_table_element_commalist: base_table_element_commalist \',\' base_table_element",
		"base_table_element: column_def",
		"base_table_element: table_constraint_def",
		"column_def: column data_type column_def_opt_list",
		"column_def_opt_list:",
		"column_def_opt_list: column_def_opt_list column_def_opt",
		"column_def_opt: NOT NULLX",
		"column_def_opt: NOT NULLX UNIQUE",
		"column_def_opt: NOT NULLX PRIMARY KEY",
		"column_def_opt: DEFAULT literal",
		"column_def_opt: DEFAULT NULLX",
		"column_def_opt: DEFAULT USER",
		"column_def_opt: CHECK \'(\' search_condition \')\'",
		"column_def_opt: REFERENCES table",
		"column_def_opt: REFERENCES table \'(\' column_commalist \')\'",
		"table_constraint_def: UNIQUE \'(\' column_commalist \')\'",
		"table_constraint_def: PRIMARY KEY \'(\' column_commalist \')\'",
		"table_constraint_def: FOREIGN KEY \'(\' column_commalist \')\' REFERENCES table",
		"table_constraint_def: FOREIGN KEY \'(\' column_commalist \')\' REFERENCES table \'(\' column_commalist \')\'",
		"table_constraint_def: CHECK \'(\' search_condition \')\'",
		"column_commalist: column",
		"column_commalist: column_commalist \',\' column",
		"view_def: CREATE VIEW table opt_column_commalist AS query_spec opt_with_check_option",
		"opt_with_check_option:",
		"opt_with_check_option: WITH CHECK OPTION",
		"opt_column_commalist:",
		"opt_column_commalist: \'(\' column_commalist \')\'",
		"privilege_def: GRANT privileges ON table TO grantee_commalist opt_with_grant_option",
		"opt_with_grant_option:",
		"opt_with_grant_option: WITH GRANT OPTION",
		"privileges: ALL PRIVILEGES",
		"privileges: ALL",
		"privileges: operation_commalist",
		"operation_commalist: operation",
		"operation_commalist: operation_commalist \',\' operation",
		"operation: SELECT",
		"operation: INSERT",
		"operation: DELETE",
		"operation: UPDATE opt_column_commalist",
		"operation: REFERENCES opt_column_commalist",
		"grantee_commalist: grantee",
		"grantee_commalist: grantee_commalist \',\' grantee",
		"grantee: PUBLIC",
		"grantee: user",
		"sql: cursor_def",
		"cursor_def: DECLARE cursor CURSOR FOR query_exp opt_order_by_clause",
		"opt_order_by_clause:",
		"opt_order_by_clause: ORDER BY ordering_spec_commalist",
		"ordering_spec_commalist: ordering_spec",
		"ordering_spec_commalist: ordering_spec_commalist \',\' ordering_spec",
		"ordering_spec: INTNUM opt_asc_desc",
		"ordering_spec: column_ref opt_asc_desc",
		"opt_asc_desc:",
		"opt_asc_desc: ASC",
		"opt_asc_desc: DESC",
		"sql: manipulative_statement",
		"manipulative_statement: close_statement",
		"manipulative_statement: commit_statement",
		"manipulative_statement: delete_statement_positioned",
		"manipulative_statement: delete_statement_searched",
		"manipulative_statement: fetch_statement",
		"manipulative_statement: insert_statement",
		"manipulative_statement: open_statement",
		"manipulative_statement: rollback_statement",
		"manipulative_statement: select_statement",
		"manipulative_statement: update_statement_positioned",
		"manipulative_statement: update_statement_searched",
		"close_statement: CLOSE cursor",
		"commit_statement: COMMIT WORK",
		"delete_statement_positioned: DELETE FROM table WHERE CURRENT OF cursor",
		"delete_statement_searched: DELETE FROM table opt_where_clause",
		"fetch_statement: FETCH cursor INTO target_commalist",
		"insert_statement: INSERT INTO table opt_column_commalist values_or_query_spec",
		"values_or_query_spec: VALUES \'(\' insert_atom_commalist \')\'",
		"values_or_query_spec: query_spec",
		"insert_atom_commalist: insert_atom",
		"insert_atom_commalist: insert_atom_commalist \',\' insert_atom",
		"insert_atom: atom",
		"insert_atom: NULLX",
		"open_statement: OPEN cursor",
		"rollback_statement: ROLLBACK WORK",
		"select_statement: SELECT opt_all_distinct selection INTO target_commalist table_exp",
		"opt_all_distinct:",
		"opt_all_distinct: ALL",
		"opt_all_distinct: DISTINCT",
		"update_statement_positioned: UPDATE table SET assignment_commalist WHERE CURRENT OF cursor",
		"assignment_commalist:",
		"assignment_commalist: assignment",
		"assignment_commalist: assignment_commalist \',\' assignment",
		"assignment: column \'=\' scalar_exp",
		"assignment: column \'=\' NULLX",
		"update_statement_searched: UPDATE table SET assignment_commalist opt_where_clause",
		"target_commalist: target",
		"target_commalist: target_commalist \',\' target",
		"target: parameter_ref",
		"opt_where_clause:",
		"opt_where_clause: where_clause",
		"query_exp: query_term",
		"query_exp: query_exp UNION query_term",
		"query_exp: query_exp UNION ALL query_term",
		"query_term: query_spec",
		"query_term: \'(\' query_exp \')\'",
		"query_spec: SELECT opt_all_distinct selection table_exp",
		"selection: scalar_exp_commalist",
		"selection: \'*\'",
		"table_exp: from_clause opt_where_clause opt_group_by_clause opt_having_clause",
		"from_clause: FROM table_ref_commalist",
		"table_ref_commalist: table_ref",
		"table_ref_commalist: table_ref_commalist \',\' table_ref",
		"table_ref: table",
		"table_ref: table range_variable",
		"where_clause: WHERE search_condition",
		"opt_group_by_clause:",
		"opt_group_by_clause: GROUP BY column_ref_commalist",
		"column_ref_commalist: column_ref",
		"column_ref_commalist: column_ref_commalist \',\' column_ref",
		"opt_having_clause:",
		"opt_having_clause: HAVING search_condition",
		"search_condition:",
		"search_condition: search_condition OR search_condition",
		"search_condition: search_condition AND search_condition",
		"search_condition: NOT search_condition",
		"search_condition: \'(\' search_condition \')\'",
		"search_condition: predicate",
		"predicate: comparison_predicate",
		"predicate: between_predicate",
		"predicate: like_predicate",
		"predicate: test_for_null",
		"predicate: in_predicate",
		"predicate: all_or_any_predicate",
		"predicate: existence_test",
		"comparison_predicate: scalar_exp COMPARISON scalar_exp",
		"comparison_predicate: scalar_exp COMPARISON subquery",
		"between_predicate: scalar_exp NOT BETWEEN scalar_exp AND scalar_exp",
		"between_predicate: scalar_exp BETWEEN scalar_exp AND scalar_exp",
		"like_predicate: scalar_exp NOT LIKE atom opt_escape",
		"like_predicate: scalar_exp LIKE atom opt_escape",
		"opt_escape:",
		"opt_escape: ESCAPE atom",
		"test_for_null: column_ref IS NOT NULLX",
		"test_for_null: column_ref IS NULLX",
		"in_predicate: scalar_exp NOT IN \'(\' subquery \')\'",
		"in_predicate: scalar_exp IN \'(\' subquery \')\'",
		"in_predicate: scalar_exp NOT IN \'(\' atom_commalist \')\'",
		"in_predicate: scalar_exp IN \'(\' atom_commalist \')\'",
		"atom_commalist: atom",
		"atom_commalist: atom_commalist \',\' atom",
		"all_or_any_predicate: scalar_exp COMPARISON any_all_some subquery",
		"any_all_some: ANY",
		"any_all_some: ALL",
		"any_all_some: SOME",
		"existence_test: EXISTS subquery",
		"subquery: \'(\' SELECT opt_all_distinct selection table_exp \')\'",
		"scalar_exp: scalar_exp \'+\' scalar_exp",
		"scalar_exp: scalar_exp \'-\' scalar_exp",
		"scalar_exp: scalar_exp \'*\' scalar_exp",
		"scalar_exp: scalar_exp \'/\' scalar_exp",
		"scalar_exp: \'+\' scalar_exp",
		"scalar_exp: \'-\' scalar_exp",
		"scalar_exp: atom",
		"scalar_exp: column_ref",
		"scalar_exp: function_ref",
		"scalar_exp: \'(\' scalar_exp \')\'",
		"scalar_exp_commalist: scalar_exp",
		"scalar_exp_commalist: scalar_exp_commalist \',\' scalar_exp",
		"atom: parameter_ref",
		"atom: literal",
		"atom: USER",
		"parameter_ref: parameter",
		"parameter_ref: parameter parameter",
		"parameter_ref: parameter INDICATOR parameter",
		"function_ref: AMMSC \'(\' \'*\' \')\'",
		"function_ref: AMMSC \'(\' DISTINCT column_ref \')\'",
		"function_ref: AMMSC \'(\' ALL scalar_exp \')\'",
		"function_ref: AMMSC \'(\' scalar_exp \')\'",
		"literal: STRING",
		"literal: INTNUM",
		"literal: APPROXNUM",
		"table: NAME",
		"table: NAME \'.\' NAME",
		"column_ref: NAME",
		"column_ref: NAME \'.\' NAME",
		"column_ref: NAME \'.\' NAME \'.\' NAME",
		"data_type: CHARACTER",
		"data_type: CHARACTER \'(\' INTNUM \')\'",
		"data_type: NUMERIC",
		"data_type: NUMERIC \'(\' INTNUM \')\'",
		"data_type: NUMERIC \'(\' INTNUM \',\' INTNUM \')\'",
		"data_type: DECIMAL",
		"data_type: DECIMAL \'(\' INTNUM \')\'",
		"data_type: DECIMAL \'(\' INTNUM \',\' INTNUM \')\'",
		"data_type: INTEGER",
		"data_type: SMALLINT",
		"data_type: FLOAT",
		"data_type: FLOAT \'(\' INTNUM \')\'",
		"data_type: REAL",
		"data_type: DOUBLE PRECISION",
		"column: NAME",
		"cursor: NAME",
		"parameter: PARAMETER",
		"range_variable: NAME",
		"user: NAME",
		"sql: WHENEVER NOT FOUND when_action",
		"sql: WHENEVER SQLERROR when_action",
		"when_action: GOTO NAME",
		"when_action: CONTINUE"
	};
	yyrule = rule;
#endif

	static const yyreduction_t YYNEARFAR YYBASED_CODE reduction[] = {
		{ 0, 1, -1 },
		{ 1, 2, 0 },
		{ 1, 3, 1 },
		{ 2, 1, -1 },
		{ 3, 5, -1 },
		{ 4, 0, -1 },
		{ 4, 1, -1 },
		{ 5, 1, -1 },
		{ 5, 2, -1 },
		{ 6, 1, -1 },
		{ 6, 1, -1 },
		{ 6, 1, -1 },
		{ 7, 6, -1 },
		{ 8, 1, -1 },
		{ 8, 3, -1 },
		{ 9, 1, -1 },
		{ 9, 1, -1 },
		{ 10, 3, -1 },
		{ 11, 0, -1 },
		{ 11, 2, -1 },
		{ 12, 2, -1 },
		{ 12, 3, -1 },
		{ 12, 4, -1 },
		{ 12, 2, -1 },
		{ 12, 2, -1 },
		{ 12, 2, -1 },
		{ 12, 4, -1 },
		{ 12, 2, -1 },
		{ 12, 5, -1 },
		{ 13, 4, -1 },
		{ 13, 5, -1 },
		{ 13, 7, -1 },
		{ 13, 10, -1 },
		{ 13, 4, -1 },
		{ 14, 1, -1 },
		{ 14, 3, -1 },
		{ 15, 7, -1 },
		{ 16, 0, -1 },
		{ 16, 3, -1 },
		{ 17, 0, -1 },
		{ 17, 3, -1 },
		{ 18, 7, -1 },
		{ 19, 0, -1 },
		{ 19, 3, -1 },
		{ 20, 2, -1 },
		{ 20, 1, -1 },
		{ 20, 1, -1 },
		{ 21, 1, -1 },
		{ 21, 3, -1 },
		{ 22, 1, -1 },
		{ 22, 1, -1 },
		{ 22, 1, -1 },
		{ 22, 2, -1 },
		{ 22, 2, -1 },
		{ 23, 1, -1 },
		{ 23, 3, -1 },
		{ 24, 1, -1 },
		{ 24, 1, -1 },
		{ 2, 1, -1 },
		{ 25, 6, -1 },
		{ 26, 0, -1 },
		{ 26, 3, -1 },
		{ 27, 1, -1 },
		{ 27, 3, -1 },
		{ 28, 2, -1 },
		{ 28, 2, -1 },
		{ 29, 0, -1 },
		{ 29, 1, -1 },
		{ 29, 1, -1 },
		{ 2, 1, -1 },
		{ 30, 1, -1 },
		{ 30, 1, -1 },
		{ 30, 1, -1 },
		{ 30, 1, -1 },
		{ 30, 1, -1 },
		{ 30, 1, -1 },
		{ 30, 1, -1 },
		{ 30, 1, -1 },
		{ 30, 1, -1 },
		{ 30, 1, -1 },
		{ 30, 1, -1 },
		{ 31, 2, -1 },
		{ 32, 2, -1 },
		{ 33, 7, -1 },
		{ 34, 4, -1 },
		{ 35, 4, -1 },
		{ 36, 5, -1 },
		{ 37, 4, -1 },
		{ 37, 1, -1 },
		{ 38, 1, -1 },
		{ 38, 3, -1 },
		{ 39, 1, -1 },
		{ 39, 1, -1 },
		{ 40, 2, -1 },
		{ 41, 2, -1 },
		{ 42, 6, -1 },
		{ 43, 0, -1 },
		{ 43, 1, -1 },
		{ 43, 1, -1 },
		{ 44, 8, -1 },
		{ 45, 0, -1 },
		{ 45, 1, -1 },
		{ 45, 3, -1 },
		{ 46, 3, -1 },
		{ 46, 3, -1 },
		{ 47, 5, -1 },
		{ 48, 1, -1 },
		{ 48, 3, -1 },
		{ 49, 1, -1 },
		{ 50, 0, -1 },
		{ 50, 1, -1 },
		{ 51, 1, -1 },
		{ 51, 3, -1 },
		{ 51, 4, -1 },
		{ 52, 1, -1 },
		{ 52, 3, -1 },
		{ 53, 4, -1 },
		{ 54, 1, -1 },
		{ 54, 1, -1 },
		{ 55, 4, -1 },
		{ 56, 2, -1 },
		{ 57, 1, -1 },
		{ 57, 3, -1 },
		{ 58, 1, -1 },
		{ 58, 2, -1 },
		{ 59, 2, -1 },
		{ 60, 0, -1 },
		{ 60, 3, -1 },
		{ 61, 1, -1 },
		{ 61, 3, -1 },
		{ 62, 0, -1 },
		{ 62, 2, -1 },
		{ 63, 0, -1 },
		{ 63, 3, -1 },
		{ 63, 3, -1 },
		{ 63, 2, -1 },
		{ 63, 3, -1 },
		{ 63, 1, -1 },
		{ 64, 1, -1 },
		{ 64, 1, -1 },
		{ 64, 1, -1 },
		{ 64, 1, -1 },
		{ 64, 1, -1 },
		{ 64, 1, -1 },
		{ 64, 1, -1 },
		{ 65, 3, -1 },
		{ 65, 3, -1 },
		{ 66, 6, -1 },
		{ 66, 5, -1 },
		{ 67, 5, -1 },
		{ 67, 4, -1 },
		{ 68, 0, -1 },
		{ 68, 2, -1 },
		{ 69, 4, -1 },
		{ 69, 3, -1 },
		{ 70, 6, -1 },
		{ 70, 5, -1 },
		{ 70, 6, -1 },
		{ 70, 5, -1 },
		{ 71, 1, -1 },
		{ 71, 3, -1 },
		{ 72, 4, -1 },
		{ 73, 1, -1 },
		{ 73, 1, -1 },
		{ 73, 1, -1 },
		{ 74, 2, -1 },
		{ 75, 6, -1 },
		{ 76, 3, -1 },
		{ 76, 3, -1 },
		{ 76, 3, -1 },
		{ 76, 3, -1 },
		{ 76, 2, -1 },
		{ 76, 2, -1 },
		{ 76, 1, -1 },
		{ 76, 1, -1 },
		{ 76, 1, -1 },
		{ 76, 3, -1 },
		{ 77, 1, -1 },
		{ 77, 3, -1 },
		{ 78, 1, -1 },
		{ 78, 1, -1 },
		{ 78, 1, -1 },
		{ 79, 1, -1 },
		{ 79, 2, -1 },
		{ 79, 3, -1 },
		{ 80, 4, -1 },
		{ 80, 5, -1 },
		{ 80, 5, -1 },
		{ 80, 4, -1 },
		{ 81, 1, -1 },
		{ 81, 1, -1 },
		{ 81, 1, -1 },
		{ 82, 1, -1 },
		{ 82, 3, -1 },
		{ 83, 1, -1 },
		{ 83, 3, -1 },
		{ 83, 5, -1 },
		{ 84, 1, -1 },
		{ 84, 4, -1 },
		{ 84, 1, -1 },
		{ 84, 4, -1 },
		{ 84, 6, -1 },
		{ 84, 1, -1 },
		{ 84, 4, -1 },
		{ 84, 6, -1 },
		{ 84, 1, -1 },
		{ 84, 1, -1 },
		{ 84, 1, -1 },
		{ 84, 4, -1 },
		{ 84, 1, -1 },
		{ 84, 2, -1 },
		{ 85, 1, -1 },
		{ 86, 1, -1 },
		{ 87, 1, -1 },
		{ 88, 1, -1 },
		{ 89, 1, -1 },
		{ 2, 4, -1 },
		{ 2, 3, -1 },
		{ 90, 2, -1 },
		{ 90, 1, -1 }
	};
	yyreduction = reduction;

	yytokenaction_size = 463;

	static const yytokenaction_t YYNEARFAR YYBASED_CODE tokenaction[] = {
		{ 13, YYAT_ACCEPT, 0 },
		{ 160, YYAT_SHIFT, 124 },
		{ 334, YYAT_SHIFT, 358 },
		{ 174, YYAT_SHIFT, 216 },
		{ 160, YYAT_SHIFT, 55 },
		{ 401, YYAT_SHIFT, 407 },
		{ 160, YYAT_SHIFT, 56 },
		{ 107, YYAT_SHIFT, 159 },
		{ 189, YYAT_SHIFT, 231 },
		{ 95, YYAT_SHIFT, 147 },
		{ 12, YYAT_SHIFT, 44 },
		{ 187, YYAT_SHIFT, 226 },
		{ 83, YYAT_SHIFT, 124 },
		{ 344, YYAT_SHIFT, 185 },
		{ 344, YYAT_SHIFT, 186 },
		{ 83, YYAT_SHIFT, 55 },
		{ 199, YYAT_SHIFT, 247 },
		{ 83, YYAT_SHIFT, 56 },
		{ 267, YYAT_SHIFT, 97 },
		{ 267, YYAT_SHIFT, 98 },
		{ 321, YYAT_SHIFT, 285 },
		{ 267, YYAT_SHIFT, 99 },
		{ 409, YYAT_SHIFT, 105 },
		{ 267, YYAT_SHIFT, 100 },
		{ 223, YYAT_SHIFT, 39 },
		{ 373, YYAT_SHIFT, 58 },
		{ 373, YYAT_SHIFT, 59 },
		{ 373, YYAT_SHIFT, 60 },
		{ 188, YYAT_SHIFT, 228 },
		{ 302, YYAT_SHIFT, 53 },
		{ 389, YYAT_SHIFT, 124 },
		{ 355, YYAT_SHIFT, 371 },
		{ 302, YYAT_SHIFT, 55 },
		{ 389, YYAT_SHIFT, 55 },
		{ 302, YYAT_SHIFT, 56 },
		{ 389, YYAT_SHIFT, 56 },
		{ 293, YYAT_SHIFT, 322 },
		{ 122, YYAT_SHIFT, 176 },
		{ 388, YYAT_SHIFT, 399 },
		{ 321, YYAT_SHIFT, 286 },
		{ 309, YYAT_ERROR, 0 },
		{ 215, YYAT_SHIFT, 165 },
		{ 120, YYAT_SHIFT, 39 },
		{ 355, YYAT_SHIFT, 372 },
		{ 293, YYAT_SHIFT, 323 },
		{ 223, YYAT_SHIFT, 40 },
		{ 316, YYAT_SHIFT, 124 },
		{ 309, YYAT_SHIFT, 62 },
		{ 114, YYAT_SHIFT, 111 },
		{ 316, YYAT_SHIFT, 55 },
		{ 293, YYAT_SHIFT, 324 },
		{ 316, YYAT_SHIFT, 56 },
		{ 355, YYAT_SHIFT, 373 },
		{ 10, YYAT_SHIFT, 39 },
		{ 293, YYAT_SHIFT, 325 },
		{ 388, YYAT_SHIFT, 400 },
		{ 122, YYAT_SHIFT, 177 },
		{ 188, YYAT_SHIFT, 229 },
		{ 187, YYAT_SHIFT, 227 },
		{ 215, YYAT_SHIFT, 166 },
		{ 180, YYAT_SHIFT, 188 },
		{ 180, YYAT_SHIFT, 189 },
		{ 263, YYAT_SHIFT, 296 },
		{ 120, YYAT_SHIFT, 40 },
		{ 321, YYAT_SHIFT, 287 },
		{ 188, YYAT_SHIFT, 230 },
		{ 293, YYAT_SHIFT, 326 },
		{ 114, YYAT_SHIFT, 112 },
		{ 309, YYAT_SHIFT, 63 },
		{ 180, YYAT_SHIFT, 190 },
		{ 81, YYAT_SHIFT, 111 },
		{ 75, YYAT_SHIFT, 76 },
		{ 260, YYAT_SHIFT, 296 },
		{ 293, YYAT_SHIFT, 327 },
		{ 10, YYAT_SHIFT, 40 },
		{ 128, YYAT_SHIFT, 185 },
		{ 128, YYAT_SHIFT, 186 },
		{ 373, YYAT_SHIFT, 390 },
		{ 263, YYAT_SHIFT, 297 },
		{ 12, YYAT_SHIFT, 45 },
		{ 215, YYAT_SHIFT, 167 },
		{ 321, YYAT_SHIFT, 288 },
		{ 72, YYAT_SHIFT, 102 },
		{ 215, YYAT_SHIFT, 168 },
		{ 408, YYAT_SHIFT, 410 },
		{ 293, YYAT_SHIFT, 328 },
		{ 403, YYAT_SHIFT, 409 },
		{ 111, YYAT_SHIFT, 162 },
		{ 260, YYAT_SHIFT, 297 },
		{ 81, YYAT_SHIFT, 112 },
		{ 75, YYAT_SHIFT, 77 },
		{ 293, YYAT_SHIFT, 329 },
		{ 355, YYAT_SHIFT, 374 },
		{ 215, YYAT_SHIFT, 169 },
		{ 111, YYAT_SHIFT, 163 },
		{ 154, YYAT_SHIFT, 97 },
		{ 153, YYAT_SHIFT, 97 },
		{ 72, YYAT_SHIFT, 62 },
		{ 180, YYAT_SHIFT, 191 },
		{ 314, YYAT_SHIFT, 124 },
		{ 154, YYAT_SHIFT, 100 },
		{ 153, YYAT_SHIFT, 100 },
		{ 314, YYAT_SHIFT, 55 },
		{ 399, YYAT_SHIFT, 406 },
		{ 314, YYAT_SHIFT, 56 },
		{ 373, YYAT_SHIFT, 391 },
		{ 180, YYAT_SHIFT, 192 },
		{ 411, YYAT_SHIFT, 412 },
		{ 338, YYAT_SHIFT, 97 },
		{ 338, YYAT_SHIFT, 98 },
		{ 411, YYAT_SHIFT, 195 },
		{ 338, YYAT_SHIFT, 99 },
		{ 252, YYAT_SHIFT, 124 },
		{ 338, YYAT_SHIFT, 100 },
		{ 398, YYAT_SHIFT, 405 },
		{ 252, YYAT_SHIFT, 55 },
		{ 397, YYAT_SHIFT, 404 },
		{ 252, YYAT_SHIFT, 56 },
		{ 306, YYAT_SHIFT, 97 },
		{ 306, YYAT_SHIFT, 98 },
		{ 396, YYAT_SHIFT, 42 },
		{ 306, YYAT_SHIFT, 99 },
		{ 393, YYAT_SHIFT, 402 },
		{ 306, YYAT_SHIFT, 100 },
		{ 235, YYAT_SHIFT, 97 },
		{ 235, YYAT_SHIFT, 98 },
		{ 387, YYAT_SHIFT, 398 },
		{ 235, YYAT_SHIFT, 99 },
		{ 186, YYAT_SHIFT, 124 },
		{ 235, YYAT_SHIFT, 100 },
		{ 384, YYAT_SHIFT, 397 },
		{ 186, YYAT_SHIFT, 55 },
		{ 380, YYAT_SHIFT, 396 },
		{ 186, YYAT_SHIFT, 56 },
		{ 206, YYAT_SHIFT, 97 },
		{ 206, YYAT_SHIFT, 98 },
		{ 378, YYAT_SHIFT, 395 },
		{ 206, YYAT_SHIFT, 99 },
		{ 376, YYAT_SHIFT, 394 },
		{ 206, YYAT_SHIFT, 100 },
		{ 185, YYAT_SHIFT, 124 },
		{ 156, YYAT_SHIFT, 97 },
		{ 156, YYAT_SHIFT, 98 },
		{ 185, YYAT_SHIFT, 55 },
		{ 156, YYAT_SHIFT, 99 },
		{ 185, YYAT_SHIFT, 56 },
		{ 156, YYAT_SHIFT, 100 },
		{ 370, YYAT_SHIFT, 386 },
		{ 68, YYAT_SHIFT, 97 },
		{ 68, YYAT_SHIFT, 98 },
		{ 370, YYAT_SHIFT, 387 },
		{ 68, YYAT_SHIFT, 99 },
		{ 125, YYAT_SHIFT, 124 },
		{ 68, YYAT_SHIFT, 100 },
		{ 372, YYAT_SHIFT, 389 },
		{ 125, YYAT_SHIFT, 55 },
		{ 368, YYAT_SHIFT, 383 },
		{ 125, YYAT_SHIFT, 56 },
		{ 304, YYAT_SHIFT, 340 },
		{ 368, YYAT_SHIFT, 384 },
		{ 289, YYAT_SHIFT, 320 },
		{ 304, YYAT_SHIFT, 309 },
		{ 243, YYAT_SHIFT, 277 },
		{ 289, YYAT_SHIFT, 321 },
		{ 124, YYAT_SHIFT, 124 },
		{ 243, YYAT_SHIFT, 278 },
		{ 371, YYAT_SHIFT, 388 },
		{ 124, YYAT_SHIFT, 55 },
		{ 369, YYAT_SHIFT, 385 },
		{ 124, YYAT_SHIFT, 56 },
		{ 367, YYAT_SHIFT, 382 },
		{ 365, YYAT_SHIFT, 381 },
		{ 364, YYAT_SHIFT, 380 },
		{ 362, YYAT_SHIFT, 57 },
		{ 359, YYAT_SHIFT, 378 },
		{ 358, YYAT_SHIFT, 332 },
		{ 356, YYAT_SHIFT, 376 },
		{ 354, YYAT_SHIFT, 370 },
		{ 353, YYAT_SHIFT, 369 },
		{ 351, YYAT_SHIFT, 368 },
		{ 350, YYAT_SHIFT, 367 },
		{ 348, YYAT_SHIFT, 366 },
		{ 345, YYAT_SHIFT, 363 },
		{ 343, YYAT_SHIFT, 362 },
		{ 337, YYAT_SHIFT, 361 },
		{ 331, YYAT_SHIFT, 356 },
		{ 327, YYAT_SHIFT, 354 },
		{ 325, YYAT_SHIFT, 353 },
		{ 324, YYAT_SHIFT, 352 },
		{ 323, YYAT_SHIFT, 351 },
		{ 322, YYAT_SHIFT, 350 },
		{ 318, YYAT_SHIFT, 347 },
		{ 317, YYAT_SHIFT, 346 },
		{ 303, YYAT_SHIFT, 339 },
		{ 301, YYAT_SHIFT, 202 },
		{ 299, YYAT_SHIFT, 260 },
		{ 294, YYAT_SHIFT, 120 },
		{ 288, YYAT_SHIFT, 319 },
		{ 287, YYAT_SHIFT, 318 },
		{ 286, YYAT_SHIFT, 317 },
		{ 285, YYAT_SHIFT, 316 },
		{ 283, YYAT_SHIFT, 314 },
		{ 282, YYAT_SHIFT, 313 },
		{ 278, YYAT_SHIFT, 242 },
		{ 274, YYAT_SHIFT, 308 },
		{ 273, YYAT_SHIFT, 307 },
		{ 269, YYAT_SHIFT, 275 },
		{ 268, YYAT_SHIFT, 183 },
		{ 265, YYAT_SHIFT, 54 },
		{ 261, YYAT_SHIFT, 299 },
		{ 257, YYAT_SHIFT, 295 },
		{ 256, YYAT_SHIFT, 294 },
		{ 254, YYAT_SHIFT, 29 },
		{ 253, YYAT_SHIFT, 282 },
		{ 250, YYAT_SHIFT, 281 },
		{ 249, YYAT_SHIFT, 279 },
		{ 240, YYAT_SHIFT, 275 },
		{ 238, YYAT_SHIFT, 271 },
		{ 160, YYAT_SHIFT, 57 },
		{ 160, YYAT_SHIFT, 58 },
		{ 160, YYAT_SHIFT, 59 },
		{ 160, YYAT_SHIFT, 60 },
		{ 237, YYAT_SHIFT, 183 },
		{ 231, YYAT_SHIFT, 223 },
		{ 160, YYAT_SHIFT, 125 },
		{ 401, YYAT_SHIFT, 185 },
		{ 401, YYAT_SHIFT, 186 },
		{ 229, YYAT_SHIFT, 268 },
		{ 160, YYAT_SHIFT, 61 },
		{ 83, YYAT_SHIFT, 57 },
		{ 83, YYAT_SHIFT, 58 },
		{ 83, YYAT_SHIFT, 59 },
		{ 83, YYAT_SHIFT, 60 },
		{ 95, YYAT_SHIFT, 148 },
		{ 189, YYAT_SHIFT, 232 },
		{ 83, YYAT_SHIFT, 125 },
		{ 189, YYAT_SHIFT, 233 },
		{ 199, YYAT_ERROR, 0 },
		{ 267, YYAT_SHIFT, 302 },
		{ 83, YYAT_SHIFT, 61 },
		{ 226, YYAT_SHIFT, 266 },
		{ 160, YYAT_SHIFT, 208 },
		{ 224, YYAT_SHIFT, 186 },
		{ 219, YYAT_SHIFT, 119 },
		{ 210, YYAT_SHIFT, 89 },
		{ 209, YYAT_SHIFT, 255 },
		{ 302, YYAT_SHIFT, 57 },
		{ 389, YYAT_SHIFT, 57 },
		{ 389, YYAT_SHIFT, 58 },
		{ 389, YYAT_SHIFT, 59 },
		{ 389, YYAT_SHIFT, 60 },
		{ 160, YYAT_SHIFT, 127 },
		{ 83, YYAT_SHIFT, 126 },
		{ 389, YYAT_SHIFT, 125 },
		{ 95, YYAT_SHIFT, 149 },
		{ 208, YYAT_SHIFT, 254 },
		{ 302, YYAT_SHIFT, 61 },
		{ 389, YYAT_SHIFT, 61 },
		{ 204, YYAT_SHIFT, 252 },
		{ 200, YYAT_SHIFT, 248 },
		{ 197, YYAT_SHIFT, 246 },
		{ 191, YYAT_SHIFT, 239 },
		{ 83, YYAT_SHIFT, 127 },
		{ 316, YYAT_SHIFT, 57 },
		{ 316, YYAT_SHIFT, 58 },
		{ 316, YYAT_SHIFT, 59 },
		{ 316, YYAT_SHIFT, 60 },
		{ 183, YYAT_SHIFT, 223 },
		{ 179, YYAT_SHIFT, 221 },
		{ 316, YYAT_SHIFT, 125 },
		{ 177, YYAT_SHIFT, 219 },
		{ 176, YYAT_SHIFT, 218 },
		{ 171, YYAT_SHIFT, 215 },
		{ 316, YYAT_SHIFT, 61 },
		{ 170, YYAT_SHIFT, 214 },
		{ 169, YYAT_SHIFT, 89 },
		{ 13, YYAT_SHIFT, 1 },
		{ 13, YYAT_SHIFT, 2 },
		{ 160, YYAT_SHIFT, 62 },
		{ 13, YYAT_SHIFT, 3 },
		{ 389, YYAT_SHIFT, 127 },
		{ 167, YYAT_SHIFT, 89 },
		{ 164, YYAT_SHIFT, 211 },
		{ 13, YYAT_SHIFT, 4 },
		{ 158, YYAT_SHIFT, 205 },
		{ 13, YYAT_SHIFT, 5 },
		{ 151, YYAT_SHIFT, 139 },
		{ 150, YYAT_SHIFT, 201 },
		{ 147, YYAT_SHIFT, 198 },
		{ 83, YYAT_SHIFT, 62 },
		{ 146, YYAT_SHIFT, 197 },
		{ 13, YYAT_SHIFT, 6 },
		{ 142, YYAT_SHIFT, 196 },
		{ 141, YYAT_SHIFT, 194 },
		{ 139, YYAT_SHIFT, 62 },
		{ 130, YYAT_ERROR, 0 },
		{ 316, YYAT_SHIFT, 127 },
		{ 174, YYAT_SHIFT, 177 },
		{ 189, YYAT_SHIFT, 234 },
		{ 160, YYAT_SHIFT, 63 },
		{ 129, YYAT_SHIFT, 187 },
		{ 334, YYAT_SHIFT, 359 },
		{ 126, YYAT_SHIFT, 182 },
		{ 13, YYAT_SHIFT, 7 },
		{ 112, YYAT_SHIFT, 164 },
		{ 107, YYAT_SHIFT, 160 },
		{ 106, YYAT_SHIFT, 158 },
		{ 389, YYAT_SHIFT, 62 },
		{ 94, YYAT_SHIFT, 146 },
		{ 91, YYAT_SHIFT, 145 },
		{ 83, YYAT_SHIFT, 63 },
		{ 90, YYAT_SHIFT, 142 },
		{ 86, YYAT_SHIFT, 139 },
		{ 77, YYAT_SHIFT, 110 },
		{ 13, YYAT_SHIFT, 8 },
		{ 74, YYAT_SHIFT, 105 },
		{ 314, YYAT_SHIFT, 57 },
		{ 314, YYAT_SHIFT, 58 },
		{ 314, YYAT_SHIFT, 59 },
		{ 314, YYAT_SHIFT, 60 },
		{ 73, YYAT_SHIFT, 104 },
		{ 70, YYAT_SHIFT, 101 },
		{ 314, YYAT_SHIFT, 125 },
		{ 316, YYAT_SHIFT, 62 },
		{ 67, YYAT_SHIFT, 96 },
		{ 13, YYAT_SHIFT, 9 },
		{ 314, YYAT_SHIFT, 61 },
		{ 13, YYAT_SHIFT, 10 },
		{ 389, YYAT_SHIFT, 63 },
		{ 252, YYAT_SHIFT, 57 },
		{ 252, YYAT_SHIFT, 58 },
		{ 252, YYAT_SHIFT, 59 },
		{ 252, YYAT_SHIFT, 60 },
		{ 61, YYAT_SHIFT, 95 },
		{ 57, YYAT_SHIFT, 94 },
		{ 252, YYAT_SHIFT, 125 },
		{ 52, YYAT_SHIFT, 89 },
		{ 13, YYAT_SHIFT, 11 },
		{ 50, YYAT_SHIFT, 83 },
		{ 252, YYAT_SHIFT, 61 },
		{ 49, YYAT_SHIFT, 82 },
		{ 13, YYAT_SHIFT, 12 },
		{ 48, YYAT_SHIFT, 80 },
		{ 46, YYAT_SHIFT, 79 },
		{ 316, YYAT_SHIFT, 63 },
		{ 186, YYAT_SHIFT, 57 },
		{ 186, YYAT_SHIFT, 58 },
		{ 186, YYAT_SHIFT, 59 },
		{ 186, YYAT_SHIFT, 60 },
		{ 314, YYAT_SHIFT, 127 },
		{ 44, YYAT_SHIFT, 75 },
		{ 186, YYAT_SHIFT, 125 },
		{ 43, YYAT_SHIFT, 74 },
		{ 42, YYAT_SHIFT, 73 },
		{ 35, YYAT_SHIFT, 51 },
		{ 186, YYAT_SHIFT, 61 },
		{ 33, YYAT_SHIFT, 49 },
		{ 185, YYAT_SHIFT, 57 },
		{ 185, YYAT_SHIFT, 58 },
		{ 185, YYAT_SHIFT, 59 },
		{ 185, YYAT_SHIFT, 60 },
		{ 32, YYAT_SHIFT, 48 },
		{ 252, YYAT_SHIFT, 127 },
		{ 185, YYAT_SHIFT, 125 },
		{ 14, YYAT_SHIFT, 47 },
		{ 9, YYAT_SHIFT, 38 },
		{ 7, YYAT_SHIFT, 36 },
		{ 185, YYAT_SHIFT, 61 },
		{ 5, YYAT_SHIFT, 34 },
		{ 125, YYAT_SHIFT, 57 },
		{ 125, YYAT_SHIFT, 58 },
		{ 125, YYAT_SHIFT, 59 },
		{ 125, YYAT_SHIFT, 60 },
		{ 3, YYAT_SHIFT, 32 },
		{ 2, YYAT_SHIFT, 31 },
		{ 125, YYAT_SHIFT, 125 },
		{ 314, YYAT_SHIFT, 62 },
		{ 0, YYAT_ERROR, 0 },
		{ 186, YYAT_SHIFT, 127 },
		{ 125, YYAT_SHIFT, 61 },
		{ -1, YYAT_ERROR, 0 },
		{ 124, YYAT_SHIFT, 57 },
		{ 124, YYAT_SHIFT, 58 },
		{ 124, YYAT_SHIFT, 59 },
		{ 124, YYAT_SHIFT, 60 },
		{ -1, YYAT_ERROR, 0 },
		{ -1, YYAT_ERROR, 0 },
		{ 124, YYAT_SHIFT, 125 },
		{ -1, YYAT_ERROR, 0 },
		{ 252, YYAT_SHIFT, 62 },
		{ 185, YYAT_SHIFT, 127 },
		{ 124, YYAT_SHIFT, 61 },
		{ -1, YYAT_ERROR, 0 },
		{ -1, YYAT_ERROR, 0 },
		{ -1, YYAT_ERROR, 0 },
		{ -1, YYAT_ERROR, 0 },
		{ -1, YYAT_ERROR, 0 },
		{ 314, YYAT_SHIFT, 63 },
		{ -1, YYAT_ERROR, 0 },
		{ -1, YYAT_ERROR, 0 },
		{ -1, YYAT_ERROR, 0 },
		{ -1, YYAT_ERROR, 0 },
		{ 125, YYAT_SHIFT, 127 },
		{ -1, YYAT_ERROR, 0 },
		{ -1, YYAT_ERROR, 0 },
		{ 186, YYAT_SHIFT, 62 },
		{ -1, YYAT_ERROR, 0 },
		{ -1, YYAT_ERROR, 0 },
		{ -1, YYAT_ERROR, 0 },
		{ -1, YYAT_ERROR, 0 },
		{ 252, YYAT_SHIFT, 63 },
		{ -1, YYAT_ERROR, 0 },
		{ -1, YYAT_ERROR, 0 },
		{ -1, YYAT_ERROR, 0 },
		{ 124, YYAT_SHIFT, 127 },
		{ -1, YYAT_ERROR, 0 },
		{ -1, YYAT_ERROR, 0 },
		{ 185, YYAT_SHIFT, 62 },
		{ -1, YYAT_ERROR, 0 },
		{ -1, YYAT_ERROR, 0 },
		{ -1, YYAT_ERROR, 0 },
		{ -1, YYAT_ERROR, 0 },
		{ -1, YYAT_ERROR, 0 },
		{ -1, YYAT_ERROR, 0 },
		{ -1, YYAT_ERROR, 0 },
		{ -1, YYAT_ERROR, 0 },
		{ 186, YYAT_SHIFT, 63 },
		{ -1, YYAT_ERROR, 0 },
		{ -1, YYAT_ERROR, 0 },
		{ 125, YYAT_SHIFT, 62 },
		{ -1, YYAT_ERROR, 0 },
		{ -1, YYAT_ERROR, 0 },
		{ -1, YYAT_ERROR, 0 },
		{ -1, YYAT_ERROR, 0 },
		{ -1, YYAT_ERROR, 0 },
		{ -1, YYAT_ERROR, 0 },
		{ -1, YYAT_ERROR, 0 },
		{ -1, YYAT_ERROR, 0 },
		{ 185, YYAT_SHIFT, 63 },
		{ -1, YYAT_ERROR, 0 },
		{ -1, YYAT_ERROR, 0 },
		{ 124, YYAT_SHIFT, 62 },
		{ -1, YYAT_ERROR, 0 },
		{ -1, YYAT_ERROR, 0 },
		{ -1, YYAT_ERROR, 0 },
		{ -1, YYAT_ERROR, 0 },
		{ -1, YYAT_ERROR, 0 },
		{ -1, YYAT_ERROR, 0 },
		{ -1, YYAT_ERROR, 0 },
		{ -1, YYAT_ERROR, 0 },
		{ 125, YYAT_SHIFT, 63 },
		{ -1, YYAT_ERROR, 0 },
		{ -1, YYAT_ERROR, 0 },
		{ -1, YYAT_ERROR, 0 },
		{ -1, YYAT_ERROR, 0 },
		{ -1, YYAT_ERROR, 0 },
		{ -1, YYAT_ERROR, 0 },
		{ -1, YYAT_ERROR, 0 },
		{ -1, YYAT_ERROR, 0 },
		{ -1, YYAT_ERROR, 0 },
		{ -1, YYAT_ERROR, 0 },
		{ -1, YYAT_ERROR, 0 },
		{ 124, YYAT_SHIFT, 63 }
	};
	yytokenaction = tokenaction;

	static const yystateaction_t YYNEARFAR YYBASED_CODE stateaction[] = {
		{ 377, 1, YYAT_DEFAULT, 13 },
		{ 0, 0, YYAT_DEFAULT, 254 },
		{ 30, 1, YYAT_ERROR, 0 },
		{ 47, 1, YYAT_ERROR, 0 },
		{ 0, 0, YYAT_DEFAULT, 254 },
		{ 72, 1, YYAT_ERROR, 0 },
		{ 0, 0, YYAT_DEFAULT, 254 },
		{ 61, 1, YYAT_ERROR, 0 },
		{ 0, 0, YYAT_DEFAULT, 254 },
		{ 21, 1, YYAT_ERROR, 0 },
		{ -213, 1, YYAT_REDUCE, 96 },
		{ 0, 0, YYAT_DEFAULT, 396 },
		{ -253, 1, YYAT_ERROR, 0 },
		{ 0, 1, YYAT_ERROR, 0 },
		{ 305, 1, YYAT_ERROR, 0 },
		{ 0, 0, YYAT_REDUCE, 3 },
		{ 0, 0, YYAT_REDUCE, 58 },
		{ 0, 0, YYAT_REDUCE, 69 },
		{ 0, 0, YYAT_REDUCE, 70 },
		{ 0, 0, YYAT_REDUCE, 71 },
		{ 0, 0, YYAT_REDUCE, 72 },
		{ 0, 0, YYAT_REDUCE, 73 },
		{ 0, 0, YYAT_REDUCE, 74 },
		{ 0, 0, YYAT_REDUCE, 75 },
		{ 0, 0, YYAT_REDUCE, 76 },
		{ 0, 0, YYAT_REDUCE, 77 },
		{ 0, 0, YYAT_REDUCE, 78 },
		{ 0, 0, YYAT_REDUCE, 79 },
		{ 0, 0, YYAT_REDUCE, 80 },
		{ 0, 0, YYAT_REDUCE, 212 },
		{ 0, 0, YYAT_REDUCE, 81 },
		{ 0, 0, YYAT_REDUCE, 82 },
		{ 90, 1, YYAT_ERROR, 0 },
		{ 75, 1, YYAT_ERROR, 0 },
		{ 0, 0, YYAT_DEFAULT, 396 },
		{ 49, 1, YYAT_ERROR, 0 },
		{ 0, 0, YYAT_DEFAULT, 396 },
		{ 0, 0, YYAT_REDUCE, 93 },
		{ 0, 0, YYAT_REDUCE, 94 },
		{ 0, 0, YYAT_REDUCE, 97 },
		{ 0, 0, YYAT_REDUCE, 98 },
		{ 0, 0, YYAT_DEFAULT, 265 },
		{ 307, 1, YYAT_REDUCE, 192 },
		{ 24, 1, YYAT_ERROR, 0 },
		{ 55, 1, YYAT_ERROR, 0 },
		{ 0, 0, YYAT_DEFAULT, 75 },
		{ 284, 1, YYAT_ERROR, 0 },
		{ 0, 0, YYAT_REDUCE, 1 },
		{ 85, 1, YYAT_ERROR, 0 },
		{ 47, 1, YYAT_ERROR, 0 },
		{ -4, 1, YYAT_REDUCE, 109 },
		{ 0, 0, YYAT_DEFAULT, 139 },
		{ 296, 1, YYAT_REDUCE, 39 },
		{ 0, 0, YYAT_DEFAULT, 302 },
		{ 0, 0, YYAT_REDUCE, 118 },
		{ 0, 0, YYAT_DEFAULT, 302 },
		{ 0, 0, YYAT_DEFAULT, 302 },
		{ 288, 1, YYAT_REDUCE, 194 },
		{ 0, 0, YYAT_REDUCE, 189 },
		{ 0, 0, YYAT_REDUCE, 190 },
		{ 0, 0, YYAT_REDUCE, 191 },
		{ 293, 1, YYAT_ERROR, 0 },
		{ 0, 0, YYAT_REDUCE, 213 },
		{ 0, 0, YYAT_REDUCE, 181 },
		{ 0, 0, YYAT_REDUCE, 180 },
		{ 0, 0, YYAT_REDUCE, 174 },
		{ 0, 0, YYAT_REDUCE, 173 },
		{ 19, 1, YYAT_ERROR, 0 },
		{ 106, 1, YYAT_REDUCE, 177 },
		{ 0, 0, YYAT_REDUCE, 179 },
		{ 277, 1, YYAT_REDUCE, 117 },
		{ 0, 0, YYAT_REDUCE, 175 },
		{ -220, 1, YYAT_REDUCE, 182 },
		{ 63, 1, YYAT_ERROR, 0 },
		{ 58, 1, YYAT_REDUCE, 100 },
		{ -207, 1, YYAT_ERROR, 0 },
		{ 0, 0, YYAT_REDUCE, 219 },
		{ 56, 1, YYAT_ERROR, 0 },
		{ 0, 0, YYAT_REDUCE, 217 },
		{ 0, 0, YYAT_REDUCE, 2 },
		{ 0, 0, YYAT_REDUCE, 215 },
		{ -209, 1, YYAT_REDUCE, 5 },
		{ 0, 0, YYAT_DEFAULT, 219 },
		{ -28, 1, YYAT_REDUCE, 132 },
		{ 0, 0, YYAT_REDUCE, 84 },
		{ 0, 0, YYAT_REDUCE, 110 },
		{ 268, 1, YYAT_REDUCE, 85 },
		{ 0, 0, YYAT_REDUCE, 106 },
		{ 0, 0, YYAT_REDUCE, 108 },
		{ 0, 0, YYAT_DEFAULT, 409 },
		{ -28, 1, YYAT_DEFAULT, 294 },
		{ 268, 1, YYAT_DEFAULT, 199 },
		{ 0, 0, YYAT_REDUCE, 171 },
		{ 0, 0, YYAT_REDUCE, 172 },
		{ 51, 1, YYAT_ERROR, 0 },
		{ -33, 1, YYAT_DEFAULT, 302 },
		{ 0, 0, YYAT_DEFAULT, 139 },
		{ 0, 0, YYAT_DEFAULT, 302 },
		{ 0, 0, YYAT_DEFAULT, 302 },
		{ 0, 0, YYAT_DEFAULT, 302 },
		{ 0, 0, YYAT_DEFAULT, 302 },
		{ 0, 0, YYAT_DEFAULT, 302 },
		{ 0, 0, YYAT_DEFAULT, 139 },
		{ 0, 0, YYAT_REDUCE, 183 },
		{ 0, 0, YYAT_REDUCE, 193 },
		{ 0, 0, YYAT_REDUCE, 211 },
		{ 245, 1, YYAT_ERROR, 0 },
		{ -37, 1, YYAT_REDUCE, 109 },
		{ 0, 0, YYAT_REDUCE, 101 },
		{ 0, 0, YYAT_REDUCE, 216 },
		{ 0, 0, YYAT_REDUCE, 218 },
		{ -246, 1, YYAT_ERROR, 0 },
		{ 38, 1, YYAT_DEFAULT, 215 },
		{ 0, 0, YYAT_REDUCE, 4 },
		{ -231, 1, YYAT_REDUCE, 6 },
		{ 0, 0, YYAT_REDUCE, 7 },
		{ 0, 0, YYAT_REDUCE, 9 },
		{ 0, 0, YYAT_REDUCE, 10 },
		{ 0, 0, YYAT_REDUCE, 11 },
		{ 0, 0, YYAT_DEFAULT, 219 },
		{ -224, 1, YYAT_REDUCE, 96 },
		{ 0, 0, YYAT_REDUCE, 114 },
		{ -279, 1, YYAT_REDUCE, 60 },
		{ 0, 0, YYAT_REDUCE, 111 },
		{ 124, 1, YYAT_REDUCE, 132 },
		{ 112, 1, YYAT_REDUCE, 132 },
		{ -10, 1, YYAT_ERROR, 0 },
		{ 0, 0, YYAT_DEFAULT, 237 },
		{ -186, 1, YYAT_REDUCE, 125 },
		{ -6, 1, YYAT_REDUCE, 174 },
		{ 254, 1, YYAT_DEFAULT, 180 },
		{ 0, 0, YYAT_REDUCE, 137 },
		{ 0, 0, YYAT_REDUCE, 138 },
		{ 0, 0, YYAT_REDUCE, 139 },
		{ 0, 0, YYAT_REDUCE, 140 },
		{ 0, 0, YYAT_REDUCE, 141 },
		{ 0, 0, YYAT_REDUCE, 142 },
		{ 0, 0, YYAT_REDUCE, 143 },
		{ 0, 0, YYAT_REDUCE, 144 },
		{ -23, 1, YYAT_ERROR, 0 },
		{ 0, 0, YYAT_REDUCE, 34 },
		{ 252, 1, YYAT_DEFAULT, 411 },
		{ 252, 1, YYAT_ERROR, 0 },
		{ 0, 0, YYAT_REDUCE, 88 },
		{ 0, 0, YYAT_REDUCE, 86 },
		{ 0, 0, YYAT_REDUCE, 176 },
		{ 244, 1, YYAT_REDUCE, 195 },
		{ 247, 1, YYAT_ERROR, 0 },
		{ 0, 0, YYAT_DEFAULT, 302 },
		{ 0, 0, YYAT_DEFAULT, 362 },
		{ 246, 1, YYAT_DEFAULT, 199 },
		{ 242, 1, YYAT_DEFAULT, 301 },
		{ 0, 0, YYAT_REDUCE, 169 },
		{ 54, 1, YYAT_REDUCE, 167 },
		{ 53, 1, YYAT_REDUCE, 168 },
		{ 0, 0, YYAT_REDUCE, 170 },
		{ 99, 1, YYAT_REDUCE, 178 },
		{ 0, 0, YYAT_REDUCE, 184 },
		{ -26, 1, YYAT_DEFAULT, 302 },
		{ 0, 0, YYAT_DEFAULT, 409 },
		{ -39, 1, YYAT_REDUCE, 132 },
		{ 0, 0, YYAT_REDUCE, 105 },
		{ 0, 0, YYAT_DEFAULT, 396 },
		{ 0, 0, YYAT_DEFAULT, 396 },
		{ -38, 1, YYAT_REDUCE, 45 },
		{ 0, 0, YYAT_REDUCE, 51 },
		{ 0, 0, YYAT_REDUCE, 50 },
		{ 241, 1, YYAT_REDUCE, 39 },
		{ 0, 0, YYAT_REDUCE, 49 },
		{ 235, 1, YYAT_REDUCE, 39 },
		{ -39, 1, YYAT_ERROR, 0 },
		{ 228, 1, YYAT_REDUCE, 46 },
		{ 0, 0, YYAT_REDUCE, 47 },
		{ 0, 0, YYAT_REDUCE, 8 },
		{ -38, 1, YYAT_ERROR, 0 },
		{ 0, 0, YYAT_DEFAULT, 265 },
		{ -2, 1, YYAT_ERROR, 0 },
		{ 4, 1, YYAT_DEFAULT, 219 },
		{ 0, 0, YYAT_REDUCE, 59 },
		{ 227, 1, YYAT_DEFAULT, 401 },
		{ -203, 1, YYAT_DEFAULT, 91 },
		{ 0, 0, YYAT_REDUCE, 135 },
		{ 0, 0, YYAT_DEFAULT, 254 },
		{ -60, 1, YYAT_ERROR, 0 },
		{ 0, 0, YYAT_REDUCE, 165 },
		{ 100, 1, YYAT_REDUCE, 132 },
		{ 88, 1, YYAT_REDUCE, 132 },
		{ -252, 1, YYAT_ERROR, 0 },
		{ -244, 1, YYAT_ERROR, 0 },
		{ -32, 1, YYAT_DEFAULT, 302 },
		{ 0, 0, YYAT_DEFAULT, 302 },
		{ 221, 1, YYAT_ERROR, 0 },
		{ 0, 0, YYAT_DEFAULT, 309 },
		{ 0, 0, YYAT_REDUCE, 107 },
		{ 0, 0, YYAT_REDUCE, 40 },
		{ 0, 0, YYAT_DEFAULT, 409 },
		{ 0, 0, YYAT_DEFAULT, 278 },
		{ 3, 1, YYAT_ERROR, 0 },
		{ 0, 0, YYAT_REDUCE, 185 },
		{ -25, 1, YYAT_DEFAULT, 267 },
		{ 218, 1, YYAT_ERROR, 0 },
		{ 0, 0, YYAT_REDUCE, 188 },
		{ 0, 0, YYAT_DEFAULT, 396 },
		{ 0, 0, YYAT_REDUCE, 95 },
		{ -84, 1, YYAT_REDUCE, 109 },
		{ 0, 0, YYAT_REDUCE, 104 },
		{ 92, 1, YYAT_REDUCE, 103 },
		{ 0, 0, YYAT_REDUCE, 102 },
		{ -57, 1, YYAT_ERROR, 0 },
		{ 205, 1, YYAT_ERROR, 0 },
		{ 204, 1, YYAT_REDUCE, 39 },
		{ 0, 0, YYAT_REDUCE, 44 },
		{ 0, 0, YYAT_REDUCE, 53 },
		{ 0, 0, YYAT_REDUCE, 52 },
		{ 0, 0, YYAT_DEFAULT, 396 },
		{ -244, 1, YYAT_ERROR, 0 },
		{ 0, 0, YYAT_REDUCE, 115 },
		{ 0, 0, YYAT_DEFAULT, 301 },
		{ 0, 0, YYAT_DEFAULT, 299 },
		{ 203, 1, YYAT_DEFAULT, 294 },
		{ 0, 0, YYAT_REDUCE, 112 },
		{ 0, 0, YYAT_REDUCE, 136 },
		{ 0, 0, YYAT_REDUCE, 83 },
		{ -242, 1, YYAT_REDUCE, 96 },
		{ -20, 1, YYAT_REDUCE, 133 },
		{ 0, 0, YYAT_REDUCE, 134 },
		{ -70, 1, YYAT_ERROR, 0 },
		{ 0, 0, YYAT_REDUCE, 154 },
		{ 0, 0, YYAT_DEFAULT, 302 },
		{ 187, 1, YYAT_ERROR, 0 },
		{ 0, 0, YYAT_DEFAULT, 309 },
		{ -104, 1, YYAT_DEFAULT, 302 },
		{ 0, 0, YYAT_REDUCE, 163 },
		{ 0, 0, YYAT_REDUCE, 162 },
		{ 0, 0, YYAT_REDUCE, 164 },
		{ 82, 1, YYAT_REDUCE, 145 },
		{ 0, 0, YYAT_REDUCE, 146 },
		{ 182, 1, YYAT_ERROR, 0 },
		{ -45, 1, YYAT_DEFAULT, 267 },
		{ 0, 0, YYAT_DEFAULT, 268 },
		{ -73, 1, YYAT_REDUCE, 151 },
		{ 0, 0, YYAT_REDUCE, 35 },
		{ 0, 0, YYAT_REDUCE, 92 },
		{ 121, 1, YYAT_ERROR, 0 },
		{ 0, 0, YYAT_REDUCE, 89 },
		{ 0, 0, YYAT_REDUCE, 91 },
		{ 0, 0, YYAT_REDUCE, 196 },
		{ 0, 0, YYAT_REDUCE, 187 },
		{ 0, 0, YYAT_REDUCE, 186 },
		{ -42, 1, YYAT_REDUCE, 123 },
		{ 170, 1, YYAT_REDUCE, 120 },
		{ 0, 0, YYAT_REDUCE, 121 },
		{ 72, 1, YYAT_REDUCE, 132 },
		{ -86, 1, YYAT_REDUCE, 126 },
		{ -45, 1, YYAT_ERROR, 0 },
		{ 0, 0, YYAT_DEFAULT, 321 },
		{ -58, 1, YYAT_ERROR, 0 },
		{ -124, 1, YYAT_ERROR, 0 },
		{ 0, 0, YYAT_REDUCE, 48 },
		{ 0, 0, YYAT_REDUCE, 116 },
		{ -198, 1, YYAT_REDUCE, 66 },
		{ 165, 1, YYAT_REDUCE, 61 },
		{ 0, 0, YYAT_REDUCE, 62 },
		{ -208, 1, YYAT_REDUCE, 66 },
		{ 0, 0, YYAT_REDUCE, 113 },
		{ 166, 1, YYAT_DEFAULT, 302 },
		{ 0, 0, YYAT_REDUCE, 153 },
		{ -24, 1, YYAT_ERROR, 0 },
		{ 167, 1, YYAT_DEFAULT, 309 },
		{ -83, 1, YYAT_REDUCE, 151 },
		{ 0, 0, YYAT_REDUCE, 161 },
		{ 0, 0, YYAT_DEFAULT, 302 },
		{ 0, 0, YYAT_REDUCE, 159 },
		{ 164, 1, YYAT_ERROR, 0 },
		{ 163, 1, YYAT_DEFAULT, 304 },
		{ 0, 0, YYAT_DEFAULT, 309 },
		{ 0, 0, YYAT_REDUCE, 150 },
		{ 0, 0, YYAT_REDUCE, 87 },
		{ -107, 1, YYAT_DEFAULT, 309 },
		{ 0, 0, YYAT_REDUCE, 214 },
		{ 0, 0, YYAT_REDUCE, 124 },
		{ 0, 0, YYAT_DEFAULT, 396 },
		{ -71, 1, YYAT_ERROR, 0 },
		{ -99, 1, YYAT_REDUCE, 130 },
		{ 0, 0, YYAT_REDUCE, 99 },
		{ 160, 1, YYAT_ERROR, 0 },
		{ -108, 1, YYAT_ERROR, 0 },
		{ -109, 1, YYAT_ERROR, 0 },
		{ 157, 1, YYAT_ERROR, 0 },
		{ 119, 1, YYAT_ERROR, 0 },
		{ 0, 0, YYAT_REDUCE, 13 },
		{ 0, 0, YYAT_REDUCE, 15 },
		{ 0, 0, YYAT_REDUCE, 16 },
		{ -238, 1, YYAT_ERROR, 0 },
		{ -131, 1, YYAT_ERROR, 0 },
		{ 0, 0, YYAT_DEFAULT, 358 },
		{ 0, 0, YYAT_REDUCE, 67 },
		{ 0, 0, YYAT_REDUCE, 68 },
		{ 0, 0, YYAT_REDUCE, 64 },
		{ -64, 1, YYAT_DEFAULT, 362 },
		{ 0, 0, YYAT_REDUCE, 65 },
		{ -102, 1, YYAT_ERROR, 0 },
		{ -11, 1, YYAT_DEFAULT, 309 },
		{ 152, 1, YYAT_ERROR, 0 },
		{ 117, 1, YYAT_ERROR, 0 },
		{ 0, 0, YYAT_REDUCE, 149 },
		{ 76, 1, YYAT_REDUCE, 148 },
		{ 0, 0, YYAT_REDUCE, 156 },
		{ 0, 0, YYAT_REDUCE, 158 },
		{ -270, 1, YYAT_DEFAULT, 373 },
		{ 0, 0, YYAT_REDUCE, 152 },
		{ 0, 0, YYAT_REDUCE, 90 },
		{ 0, 0, YYAT_REDUCE, 122 },
		{ 0, 0, YYAT_DEFAULT, 362 },
		{ 59, 1, YYAT_REDUCE, 132 },
		{ 0, 0, YYAT_REDUCE, 119 },
		{ 6, 1, YYAT_REDUCE, 132 },
		{ 152, 1, YYAT_ERROR, 0 },
		{ 151, 1, YYAT_ERROR, 0 },
		{ 0, 0, YYAT_DEFAULT, 409 },
		{ 0, 0, YYAT_REDUCE, 12 },
		{ -255, 1, YYAT_DEFAULT, 409 },
		{ 150, 1, YYAT_REDUCE, 197 },
		{ 149, 1, YYAT_REDUCE, 202 },
		{ -130, 1, YYAT_ERROR, 0 },
		{ 147, 1, YYAT_REDUCE, 207 },
		{ 0, 0, YYAT_REDUCE, 205 },
		{ 146, 1, YYAT_REDUCE, 199 },
		{ 0, 0, YYAT_REDUCE, 209 },
		{ 0, 0, YYAT_REDUCE, 206 },
		{ 0, 0, YYAT_REDUCE, 18 },
		{ -158, 1, YYAT_REDUCE, 37 },
		{ 0, 0, YYAT_REDUCE, 56 },
		{ 0, 0, YYAT_REDUCE, 57 },
		{ -42, 1, YYAT_REDUCE, 42 },
		{ 0, 0, YYAT_REDUCE, 54 },
		{ 0, 0, YYAT_REDUCE, 63 },
		{ 143, 1, YYAT_ERROR, 0 },
		{ 66, 1, YYAT_REDUCE, 147 },
		{ 0, 0, YYAT_REDUCE, 155 },
		{ 0, 0, YYAT_REDUCE, 157 },
		{ 0, 0, YYAT_REDUCE, 160 },
		{ 0, 0, YYAT_REDUCE, 128 },
		{ 139, 1, YYAT_REDUCE, 127 },
		{ -248, 1, YYAT_REDUCE, 131 },
		{ 141, 1, YYAT_DEFAULT, 401 },
		{ 0, 0, YYAT_DEFAULT, 409 },
		{ 0, 0, YYAT_DEFAULT, 409 },
		{ 140, 1, YYAT_DEFAULT, 411 },
		{ 0, 0, YYAT_REDUCE, 14 },
		{ -79, 1, YYAT_ERROR, 0 },
		{ -80, 1, YYAT_ERROR, 0 },
		{ 0, 0, YYAT_REDUCE, 210 },
		{ -81, 1, YYAT_ERROR, 0 },
		{ -82, 1, YYAT_ERROR, 0 },
		{ -232, 1, YYAT_REDUCE, 17 },
		{ -99, 1, YYAT_ERROR, 0 },
		{ 0, 0, YYAT_REDUCE, 36 },
		{ -147, 1, YYAT_DEFAULT, 48 },
		{ -124, 1, YYAT_ERROR, 0 },
		{ 0, 0, YYAT_REDUCE, 41 },
		{ 0, 0, YYAT_REDUCE, 166 },
		{ -84, 1, YYAT_ERROR, 0 },
		{ 0, 0, YYAT_REDUCE, 33 },
		{ 131, 1, YYAT_DEFAULT, 411 },
		{ 130, 1, YYAT_DEFAULT, 411 },
		{ 0, 0, YYAT_REDUCE, 29 },
		{ 129, 1, YYAT_ERROR, 0 },
		{ 115, 1, YYAT_ERROR, 0 },
		{ 127, 1, YYAT_ERROR, 0 },
		{ 106, 1, YYAT_ERROR, 0 },
		{ -144, 1, YYAT_ERROR, 0 },
		{ 114, 1, YYAT_ERROR, 0 },
		{ -233, 1, YYAT_ERROR, 0 },
		{ 0, 0, YYAT_DEFAULT, 396 },
		{ 0, 0, YYAT_REDUCE, 19 },
		{ -177, 1, YYAT_ERROR, 0 },
		{ 0, 0, YYAT_REDUCE, 55 },
		{ -179, 1, YYAT_ERROR, 0 },
		{ 0, 0, YYAT_REDUCE, 129 },
		{ -192, 1, YYAT_ERROR, 0 },
		{ 0, 0, YYAT_REDUCE, 30 },
		{ 0, 0, YYAT_REDUCE, 198 },
		{ 0, 0, YYAT_REDUCE, 203 },
		{ -129, 1, YYAT_ERROR, 0 },
		{ 0, 0, YYAT_REDUCE, 208 },
		{ 0, 0, YYAT_REDUCE, 200 },
		{ -133, 1, YYAT_ERROR, 0 },
		{ -281, 1, YYAT_REDUCE, 20 },
		{ -10, 1, YYAT_REDUCE, 132 },
		{ 0, 0, YYAT_REDUCE, 24 },
		{ 0, 0, YYAT_REDUCE, 25 },
		{ 0, 0, YYAT_REDUCE, 23 },
		{ 82, 1, YYAT_REDUCE, 27 },
		{ 0, 0, YYAT_REDUCE, 38 },
		{ 0, 0, YYAT_REDUCE, 43 },
		{ -137, 1, YYAT_ERROR, 0 },
		{ 75, 1, YYAT_ERROR, 0 },
		{ 73, 1, YYAT_ERROR, 0 },
		{ -204, 1, YYAT_ERROR, 0 },
		{ 0, 0, YYAT_REDUCE, 21 },
		{ -36, 1, YYAT_ERROR, 0 },
		{ 0, 0, YYAT_DEFAULT, 409 },
		{ 46, 1, YYAT_REDUCE, 31 },
		{ 0, 0, YYAT_REDUCE, 204 },
		{ 0, 0, YYAT_REDUCE, 201 },
		{ 0, 0, YYAT_REDUCE, 22 },
		{ 0, 0, YYAT_REDUCE, 26 },
		{ 43, 1, YYAT_DEFAULT, 411 },
		{ -235, 1, YYAT_ERROR, 0 },
		{ 0, 0, YYAT_REDUCE, 28 },
		{ 66, 1, YYAT_ERROR, 0 },
		{ 0, 0, YYAT_REDUCE, 32 }
	};
	yystateaction = stateaction;

	yynontermgoto_size = 188;

	static const yynontermgoto_t YYNEARFAR YYBASED_CODE nontermgoto[] = {
		{ 13, 46 },
		{ 13, 15 },
		{ 321, 349 },
		{ 321, 291 },
		{ 409, 411 },
		{ 358, 377 },
		{ 321, 292 },
		{ 389, 401 },
		{ 389, 131 },
		{ 389, 132 },
		{ 389, 133 },
		{ 389, 134 },
		{ 299, 336 },
		{ 389, 135 },
		{ 389, 136 },
		{ 278, 311 },
		{ 389, 137 },
		{ 139, 193 },
		{ 389, 138 },
		{ 159, 207 },
		{ 389, 130 },
		{ 265, 301 },
		{ 281, 312 },
		{ 13, 16 },
		{ 124, 179 },
		{ 90, 144 },
		{ 313, 343 },
		{ 389, 129 },
		{ 13, 17 },
		{ 13, 18 },
		{ 13, 19 },
		{ 13, 20 },
		{ 13, 21 },
		{ 13, 22 },
		{ 13, 23 },
		{ 301, 337 },
		{ 301, 204 },
		{ 124, 180 },
		{ 13, 24 },
		{ 13, 25 },
		{ 13, 26 },
		{ 90, 143 },
		{ 13, 27 },
		{ 265, 68 },
		{ 265, 70 },
		{ 13, 28 },
		{ 281, 249 },
		{ 139, 88 },
		{ 313, 342 },
		{ 268, 304 },
		{ 114, 173 },
		{ 114, 116 },
		{ 402, 408 },
		{ 268, 303 },
		{ 278, 245 },
		{ 139, 72 },
		{ 268, 272 },
		{ 396, 403 },
		{ 159, 106 },
		{ 114, 117 },
		{ 309, 341 },
		{ 309, 69 },
		{ 114, 118 },
		{ 309, 64 },
		{ 302, 338 },
		{ 204, 253 },
		{ 302, 66 },
		{ 299, 263 },
		{ 302, 71 },
		{ 309, 72 },
		{ 358, 333 },
		{ 302, 65 },
		{ 239, 274 },
		{ 374, 393 },
		{ 204, 85 },
		{ 409, 140 },
		{ 239, 273 },
		{ 189, 237 },
		{ 321, 293 },
		{ 189, 236 },
		{ 189, 235 },
		{ 112, 170 },
		{ 112, 171 },
		{ 112, 172 },
		{ 81, 113 },
		{ 81, 114 },
		{ 81, 115 },
		{ 295, 334 },
		{ 295, 335 },
		{ 255, 289 },
		{ 255, 290 },
		{ 219, 264 },
		{ 219, 121 },
		{ 218, 261 },
		{ 218, 262 },
		{ 202, 250 },
		{ 202, 251 },
		{ 196, 243 },
		{ 196, 244 },
		{ 119, 174 },
		{ 119, 123 },
		{ 96, 151 },
		{ 96, 87 },
		{ 74, 107 },
		{ 74, 108 },
		{ 0, 13 },
		{ 0, 14 },
		{ 373, 392 },
		{ 362, 379 },
		{ 355, 375 },
		{ 347, 365 },
		{ 346, 364 },
		{ 334, 360 },
		{ 331, 357 },
		{ 330, 355 },
		{ 319, 348 },
		{ 316, 345 },
		{ 314, 344 },
		{ 294, 331 },
		{ 293, 330 },
		{ 283, 315 },
		{ 275, 310 },
		{ 271, 306 },
		{ 269, 305 },
		{ 263, 300 },
		{ 260, 298 },
		{ 254, 284 },
		{ 253, 283 },
		{ 252, 128 },
		{ 249, 280 },
		{ 240, 276 },
		{ 237, 270 },
		{ 231, 91 },
		{ 230, 269 },
		{ 228, 267 },
		{ 223, 265 },
		{ 217, 259 },
		{ 215, 258 },
		{ 214, 257 },
		{ 210, 256 },
		{ 195, 241 },
		{ 192, 240 },
		{ 190, 238 },
		{ 186, 225 },
		{ 185, 224 },
		{ 182, 222 },
		{ 177, 220 },
		{ 175, 217 },
		{ 169, 213 },
		{ 167, 212 },
		{ 163, 210 },
		{ 162, 209 },
		{ 158, 206 },
		{ 151, 203 },
		{ 149, 200 },
		{ 148, 199 },
		{ 127, 184 },
		{ 125, 181 },
		{ 122, 178 },
		{ 120, 175 },
		{ 107, 161 },
		{ 102, 157 },
		{ 101, 156 },
		{ 100, 155 },
		{ 99, 154 },
		{ 98, 153 },
		{ 97, 152 },
		{ 95, 150 },
		{ 89, 141 },
		{ 82, 122 },
		{ 75, 109 },
		{ 72, 103 },
		{ 56, 93 },
		{ 55, 92 },
		{ 52, 90 },
		{ 51, 86 },
		{ 50, 84 },
		{ 48, 81 },
		{ 45, 78 },
		{ 41, 67 },
		{ 36, 52 },
		{ 34, 50 },
		{ 11, 43 },
		{ 10, 41 },
		{ 8, 37 },
		{ 6, 35 },
		{ 4, 33 },
		{ 1, 30 }
	};
	yynontermgoto = nontermgoto;

	static const yystategoto_t YYNEARFAR YYBASED_CODE stategoto[] = {
		{ 104, 13 },
		{ 101, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 100, -1 },
		{ 0, -1 },
		{ 99, -1 },
		{ 0, -1 },
		{ 98, -1 },
		{ 0, -1 },
		{ 140, -1 },
		{ 100, -1 },
		{ 0, -1 },
		{ -2, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 99, -1 },
		{ 0, -1 },
		{ 98, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 125, 265 },
		{ 0, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 88, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 88, -1 },
		{ 0, -1 },
		{ 126, 204 },
		{ 127, 96 },
		{ 157, -1 },
		{ 0, 231 },
		{ 0, -1 },
		{ 97, 302 },
		{ 96, 302 },
		{ 0, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 84, -1 },
		{ 0, -1 },
		{ 58, 159 },
		{ 80, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 80, 114 },
		{ 118, 119 },
		{ 0, 252 },
		{ 0, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 154, 409 },
		{ -12, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 91, 302 },
		{ 53, 139 },
		{ 90, 302 },
		{ 89, 302 },
		{ 88, 302 },
		{ 87, 302 },
		{ 86, 302 },
		{ 74, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 110, 204 },
		{ 0, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 61, -1 },
		{ 0, -1 },
		{ 44, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 48, 219 },
		{ 116, -1 },
		{ 0, -1 },
		{ 132, -1 },
		{ 0, -1 },
		{ -39, 389 },
		{ 94, 389 },
		{ 0, -1 },
		{ 81, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ -32, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 79, 302 },
		{ 71, -1 },
		{ 0, -1 },
		{ 98, 301 },
		{ 0, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 76, 302 },
		{ -27, -1 },
		{ 0, 252 },
		{ 0, -1 },
		{ 69, -1 },
		{ 68, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 132, -1 },
		{ 0, -1 },
		{ 131, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 93, 265 },
		{ 0, -1 },
		{ 94, 219 },
		{ 0, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 59, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 81, 389 },
		{ 80, 389 },
		{ 0, -1 },
		{ 0, -1 },
		{ 4, 302 },
		{ 66, 302 },
		{ 0, -1 },
		{ 63, 309 },
		{ 0, -1 },
		{ 0, -1 },
		{ 55, -1 },
		{ 59, 278 },
		{ 0, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 38, 281 },
		{ 0, -1 },
		{ 15, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 122, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 56, -1 },
		{ 115, -1 },
		{ 0, -1 },
		{ 81, 301 },
		{ 66, 299 },
		{ 39, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 92, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 58, 302 },
		{ 0, -1 },
		{ 55, 309 },
		{ 56, 302 },
		{ 0, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 56, -1 },
		{ 0, -1 },
		{ 1, 268 },
		{ 62, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 41, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 65, 389 },
		{ 67, -1 },
		{ 40, -1 },
		{ 81, 321 },
		{ 0, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 96, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 95, -1 },
		{ 0, -1 },
		{ -33, 302 },
		{ 0, -1 },
		{ 0, -1 },
		{ -22, 309 },
		{ 55, -1 },
		{ 0, -1 },
		{ 46, 302 },
		{ 0, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 43, 309 },
		{ 0, -1 },
		{ 0, -1 },
		{ -24, 309 },
		{ 0, -1 },
		{ 0, -1 },
		{ -36, -1 },
		{ 0, -1 },
		{ 58, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 35, -1 },
		{ 65, -1 },
		{ 64, 358 },
		{ 0, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ -16, -1 },
		{ 0, -1 },
		{ -20, -1 },
		{ -12, 309 },
		{ 0, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ -18, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ -35, -1 },
		{ 54, 389 },
		{ 0, -1 },
		{ 53, 389 },
		{ 0, -1 },
		{ 0, -1 },
		{ 101, 409 },
		{ 0, -1 },
		{ -7, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 103, -1 },
		{ 97, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 93, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 97, 409 },
		{ 96, 409 },
		{ 0, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 97, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ -19, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 25, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 26, -1 },
		{ -9, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ -56, 302 },
		{ 0, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ -25, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 38, 409 },
		{ 0, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ -10, -1 },
		{ 0, -1 },
		{ 0, -1 },
		{ 0, -1 }
	};
	yystategoto = stategoto;

	yydestructorptr = NULL;

	yytokendestptr = NULL;
	yytokendest_size = 0;

	yytokendestbaseptr = NULL;
	yytokendestbase_size = 0;
}
#line 556 ".\\sql2.y"


